{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Multi-point flux approximation (MPFA)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Porepy supports mpfa discretization for darcy flow problem:\n",
    "\\begin{equation}\n",
    "q = -K \\nabla p,\\quad \\nabla \\cdot q = f\n",
    "\\end{equation}\n",
    "\n",
    "We can write this as a single equation of pressure:\n",
    "\\begin{equation}\n",
    "-\\nabla \\cdot K\\nabla  p = f\n",
    "\\end{equation}\n",
    "\n",
    "For each control volume $\\Omega_k$ we then have\n",
    "\\begin{equation}\n",
    "\\int_{\\Omega_k} f dv = \\int_{\\partial\\Omega_k} (K\\nabla p)\\cdot n dA,\n",
    "\\end{equation}\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "To solve this system we first have to create the grid. Then we need to define boundary conditions. We set the bottom boundary as a Dirichlet boundary. The other boundaries are set to Neuman. We also need to create the permeability tensor:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import porepy as pp\n",
    "\n",
    "# Create grid\n",
    "n = 5\n",
    "g = pp.CartGrid([n,n])\n",
    "g.compute_geometry()\n",
    "\n",
    "# Define boundary type\n",
    "dirich = np.ravel(np.argwhere(g.face_centers[1] < 1e-10))\n",
    "bound = pp.BoundaryCondition(g, dirich, ['dir']*dirich.size)\n",
    "\n",
    "# Create permeability matrix\n",
    "k = np.ones(g.num_cells)\n",
    "perm = pp.SecondOrderTensor(k)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now define the boundary conditions. We set zero pressure on the bottom boundary, and a constant innflow on the top boundary. Note that the traction on the Neumann boundary is the discharge, not the flux. To get the discharge for each boundary face we scale the flux by the face areas."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "top_faces = np.ravel(np.argwhere(g.face_centers[1] > n - 1e-10))\n",
    "bot_faces = np.ravel(np.argwhere(g.face_centers[1] < 1e-10))\n",
    "\n",
    "p_b = np.zeros(g.num_faces)\n",
    "p_b[top_faces] = 1 * g.face_areas[top_faces]\n",
    "p_b[bot_faces] = 0\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now solv this problem using the Mpfa class. We assume no source or sinks $f=0$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "mpfa_solver = pp.Mpfa(\"flow\")\n",
    "\n",
    "f = np.zeros(g.num_cells)\n",
    "\n",
    "specified_parameters = {\"second_order_tensor\": perm, \"source\": f, \"bc\": bound, \"bc_values\": p_b}\n",
    "data = pp.initialize_default_data(g, {}, \"flow\", specified_parameters)\n",
    "\n",
    "mpfa_solver.discretize(g, data)\n",
    "A, b = mpfa_solver.assemble_matrix_rhs(g, data)\n",
    "\n",
    "p_class = np.linalg.solve(A.A, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/eke001/anaconda3/envs/pp/lib/python3.6/site-packages/mpl_toolkits/mplot3d/axes3d.py:753: UserWarning: Attempting to set identical bottom==top results\n",
      "in singular transformations; automatically expanding.\n",
      "bottom=0.0, top=0.0\n",
      "  'bottom=%s, top=%s') % (bottom, top))\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAKkCAYAAAB2/BJuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xt8VPWd//H3NzMJgRBuhktCUEBRQG5CAKmuiwpqaYtFqeKl4iK9bPWxdd1Htype8FJt7fZiF9td27pt5eel7WMVi5gi6tYWDRC5VAwUBAKEcFVCrpPM5fv7IyQlyZnkhJPJmZDX8/GYh3PmnPnOZ44Bziefz/d8jbVWAAAAAHC6UvwOAAAAAEDXRlIBAAAAwBOSCgAAAACekFQAAAAA8ISkAgAAAIAnJBUAAAAAPAn6HQAAAACAxDPGDJD0sqThkool3WCtPe5wXLGkCklRSRFrbV5bY1OpAAAAALqHeyW9Za0dJemtk9vxXG6tneQmoZBIKgAAAIDu4lpJvz75/NeSvthRA5s2VtRmuW0AAAB0BuN3AG6cZ4yt9vHzD0ofSQqd8tKz1tpn3bzXGFNmre13yvZxa21/h+P2SDqu+lzgv92Mz5wKAAAAwKVqSV/z8fOXSqHWWpKMMWskDXHYtaQdH3OJtbbUGDNI0pvGmO3W2ndbewNJBQAAAHCGsNbOirfPGHPYGJNtrT1ojMmWdCTOGKUn/3vEGPOKpGmSWk0qmFMBAAAAdA+vSVp48vlCSSuaH2CMyTDGZDY8l3SVpK1tDUylAgAAAHDJqEtfQH9X0m+NMXdI2ifpS5JkjMmR9Atr7RxJgyW9YoyR6r/qC9ba/LYG7sLnBAAAAIBb1tpPJF3p8HqppDknn++WNLG9Y5NUAAAAAC4ZSal+B5GEmFMBAAAAwBOSCgAAAACe0P4EAAAAuNTFJ2onDJUKAAAAAJ6QaAEAAAAuMVHbGZUKAAAAAJ6QVAAAAADwhPYnAAAAwCUmajujUgEAAADAExItAAAAwCUmajujUgEAAADAE5IKAAAAAJ7Q/gQAAAC4xERtZ1QqAAAAAHhCogUAAAC4xERtZ1QqAAAAAHhCUgEAAADAE9qfAAAAAJeYqO2MSgUAAAAAT0i0AAAAAJeYqO2MSgUAAAAAT0gqAAAAAHhC+xMAAADgEu1PzqhUAAAAAPCEpAIAAACAJ7Q/AQAAAO3ABXRLVCoAAAAAeEKiBQAAALjERG1nVCoAAAAAeEJSAQAAAMATkgoASa13797avXu3475f/epXuvTSSzs5IgBAd2ZUP3/Ar0eyIqkAoBdeeEF5eXnq3bu3srOz9dnPflZ/+ctfTns8Y4w+/vjjJq9VVFTonnvu0fDhw5WRkaGzzz5b8+fP1/r161sdq7KyUiNHjjytOOrq6rR06VKNGjVKGRkZGj58uBYtWqTi4uLTGi9Rli5dqltvvdXvMBKquLhYxhhFIhG/QwEAJABJBdDN/fCHP9Tdd9+t+++/X4cPH9a+ffv0jW98QytWrGj3WPEuGGtra3XFFVfoww8/1MqVK1VeXq5t27ZpwYIFWrVqVbvGao/58+frtdde0wsvvKATJ05oy5YtmjJlit566y3PY6PjkXAA6AoaJmr79UhWJBVAN3bixAk99NBDeuaZZ3TdddcpIyNDqamp+sIXvqDvf//7kqT169drxowZ6tevn7Kzs3XXXXeprq6ucQxjjJ555hmNGjVKo0aN0mWXXSZJmjhxonr37q2XX35Zzz//vEpKSvTqq69q3LhxCgQCysjI0Pz587V06dK4YzW81lD1+OSTTzR37lz16dNH06ZN065du+J+tzVr1ujNN9/UihUrNHXqVAWDQfXt21d33nmn7rjjDklSaWmp5s6dqwEDBui8887Tz3/+88b3L126VF/60pd06623KjMzU+PHj9eOHTv05JNPatCgQRo2bJhWr17dePzMmTN13333adq0aerbt6+uvfZaffrpp5Kk//u//1Nubm6T+IYPH641a9YoPz9fTzzxhF5++WX17t1bEydObPx/c8cddyg7O1tDhw7VAw88oGg06vhda2pqtHDhQvXv319jxozRU0891eTzSktLdf3112vgwIEaMWKEfvKTnzTuq62t1d13362cnBzl5OTo7rvvVm1tbZO4n3rqKQ0aNEjZ2dl69dVXtWrVKp1//vkaMGCAnnjiicaxYrGYvvvd7+rcc8/VWWedpRtuuKHxHDT8XPTr10+9e/fW+++/r1/96le65JJL9K//+q8aMGCAHnzwQQ0YMEAffvhh45hHjhxRz549dfTo0bj/rwEA/iOpALqx999/X6FQSPPmzYt7TCAQ0I9+9CMdO3ZM77//vt566y399Kc/bXLMq6++qnXr1qmoqEjvvvuuJGnLli2qrKzUjTfeqDVr1ujqq69WRkZGmzGdOlZzd955p9LT03Xw4EE999xzeu655+KOs2bNGk2bNk3Dhg2Le8xNN92k3NxclZaW6ve//73uv//+JlWMP/zhD/ryl7+s48eP66KLLtLVV1+tWCymAwcO6KGHHtLXvva1JuP95je/0XPPPafS0lIFg0H9y7/8S5vf95prrtH999+vG2+8UZWVldqyZYskaeHChQoGg/r444+1adMmrV69Wr/4xS8cx3jkkUdUXFys3bt3680339Ty5csb98ViMX3hC1/QxIkTdeDAAb311lv68Y9/rD/+8Y+SpO985zsqKCjQ5s2btWXLFq1fv16PP/544/sPHTqkUCikAwcO6NFHH9VXvvIVLV++XB988IH+/Oc/69FHH22c8/KTn/xEr776qv70pz+ptLRU/fv315133ilJjT8XZWVlqqys1IwZMyRJ69at08iRI3XkyBE99NBDWrBgQZP4X3zxRc2aNUsDBw5s81wCAHxkrW3tAeAMtnz5cjt48OB2vedHP/qR/eIXv9i4Lcm+9dZbTY6RZHfu3Nm4feWVV9pvf/vbjdubNm2yffv2tZmZmfb88893NVYkErHBYNBu27atcd99991nL7nkEsc4Fy9ebG+88ca432Pfvn02JSXFlpeXN75277332oULF1prrX344YftrFmzGve99tprNiMjw0YiEWutteXl5VaSPX78uLXW2n/8x39s8h0/+ugjm5qaaiORiH3nnXfs0KFDm3z+OeecY998883Gz7rlllsa9x06dMimpaXZ6urqxtdeeOEFO3PmTMfvMmLECJufn9+4/fOf/7zx8woKCuywYcOaHP/EE0/Y22+/3Vpr7ciRI+3rr7/euC8/P9+ec8451lpr33nnHZuent7iOxcUFDQeP3nyZPvKK69Ya60dPXq0XbNmTeO+0tJSGwwGbTgctnv27LGSbDgcbtz/P//zPy1iKygosLm5uTYajVprrZ0yZYp9+eWXHb83gDNOW9elSfEYLdkCHx+SCv0+B06PZJ5EDiDBzjrrLB07dkyRSETBoPNfBzt27NA999yjwsJCVVdXKxKJaMqUKU2Oaa0a0PA5Bw8ebNyeNGmSysrKtGbNGi1evNjVWEePHlUkEmmy/5xzzmn1M3fs2BF3f2lpqQYMGKDMzMwm4xUW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Hz+u5ORkPfLII6qurlZiYqLy8/N18uRJpaWlqVmzZjp16pSCgoLUv3//ptal+Ph4LVy4UJI0d+5cvfTSS8rKytJnn32mnj17KjMzU7t27VJRUZEcDkfTHadqamoUFBSk119/XbGxsaqtrdWwYcO0YMEChreBXxBJBQAAsC0+Pl6HDx/W3//+d7311lvy9/fXmDFj9Mwzz+iVV17Rk08+qdLSUi1evFhDhw5VTEyMevbsqYEDB6qyslLNmzdXYmKi6uvrFRwcrHXr1unll1/WgAEDdNttt6mkpEQ+Pj764x//qN27d2vUqFEyxuj111/XoEGD1K5dO23dulWdOnVScHCw0tPTVVZWpoCAAAUFBenxxx9X//79deDAAeXm5mrjxo3evmTADYWiAgAA2NasWTMlJydryJAhmj59unr06KHq6mq1aNFC33//vZo1a6akpCQ1NDQoMjJS+/bt0wsvvKC0tDRNnDhRd9xxh5KTk3X48GFFRESourpakZGRGjt2rI4dO6bCwkI5HA69/PLLSktL08yZM+Xn56f33ntPy5cv16JFi3Tw4EEVFxcrJSVFiYmJioyM1MiRI7Vz506Fh4eroKBAq1at0oQJE7R+/XpvXzJcrxp31PbWzzWKogIAAPwihg0bpgMHDmj9+vUKDQ1VUVGR7rnnHt12223q3LmzysvLtX//fhljFBUVpcDAQBUVFSkiIkK1tbXatWuX2rZtq/3792vcuHFq2bKlTp8+ralTp2ry5MmSpD59+qigoEDSuVmJb775RpZlaerUqUpISJCPj49ee+01ORwO+fj4KDs7W/fdd59yc3M1YMAAZWZmat68efrggw8UFxenuLg4lZaWevOyATcEigoAAPCLaryFbElJiVwul1JTUzV8+HClpKRoxIgRysnJaWqFsixLP/zwg0JCQpSdnS2n06m2bdtqzJgx+vLLLy849o477tCTTz6phoYGzZs3TwkJCZo7d658fX3VqlUrjRo1SlOmTNE333yjDz74QGfPntW6dev02muvyd/fX/v27VNMTIwkqXfv3srOzmZ4Gz8fSYVbDGoDAIBfVGMr1FNPPaWysjLNmjVL1dXVsixLZ86cUfPmzZWUlKT09HRlZGRo3759Wrdund577z01b95c8+bN05/+9CeVlZU17cYdEhKi0aNH65///Kckad26ddq7d6/i4+MV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\n",
      "text/plain": [
       "<Figure size 1080x864 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pp.plot_grid(g, cell_value=p_class, figsize=(15, 12))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To understand what goes on under the hood of the Mpfa class, we can also create the lhs and rhs manually. \n",
    "\n",
    "We start by discretizing the fluxes by using the multi-point stress approximation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "flux, bound_flux, _, _ = mpfa_solver.mpfa(g, perm, bound)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "mpfa returns the two sparse matrices \"flux\" and \"bound_flux\". They give  the discretization of the fluxes over each face:\n",
    "\\begin{equation}\n",
    "F = \\text{flux} \\cdot p + \\text{bound_flux} \\cdot p_b\n",
    "\\end{equation}\n",
    "Here $p$ is a vector of cell center pressure and has length g.num_cells. The vector $p_b$ is the boundary condition values. It is the pressure for Dirichlet boundaries and flux for Neumann boundaries and has length g.num_faces.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We are now ready to set up the linear system of equations and solve it. We assume no source and sinks $f = 0$. Each row in the discretized system is now\n",
    "\\begin{equation}\n",
    "\\int_{\\Omega_k} f dv = \\int_{\\partial\\Omega_k} F dA = [div \\cdot \\text{flux} \\cdot p + div\\cdot\\text{bound_flux}\\cdot p_b]_k,\n",
    "\\end{equation}\n",
    "We move the known boundary variable $u_b$ over to the right hand side and solve the system:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "div = pp.fvutils.scalar_divergence(g)\n",
    "A = div * flux\n",
    "b = f - div * bound_flux * p_b\n",
    "\n",
    "p = np.linalg.solve(A.A, b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This gives us the save results as using the Mpfa class:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "assert np.allclose(p, p_class)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also plot the pressure"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/eke001/anaconda3/envs/pp/lib/python3.6/site-packages/mpl_toolkits/mplot3d/axes3d.py:753: UserWarning: Attempting to set identical bottom==top results\n",
      "in singular transformations; automatically expanding.\n",
      "bottom=0.0, top=0.0\n",
      "  'bottom=%s, top=%s') % (bottom, top))\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAKkCAYAAAB2/BJuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xt8VPWd//H3NzMJgRBuhktCUEBRQG5CAKmuiwpqaYtFqeKl4iK9bPWxdd1Htype8FJt7fZiF9td27pt5eel7WMVi5gi6tYWDRC5VAwUBAKEcFVCrpPM5fv7IyQlyZnkhJPJmZDX8/GYh3PmnPnOZ44Bziefz/d8jbVWAAAAAHC6UvwOAAAAAEDXRlIBAAAAwBOSCgAAAACekFQAAAAA8ISkAgAAAIAnJBUAAAAAPAn6HQAAAACAxDPGDJD0sqThkool3WCtPe5wXLGkCklRSRFrbV5bY1OpAAAAALqHeyW9Za0dJemtk9vxXG6tneQmoZBIKgAAAIDu4lpJvz75/NeSvthRA5s2VtRmuW0AAAB0BuN3AG6cZ4yt9vHzD0ofSQqd8tKz1tpn3bzXGFNmre13yvZxa21/h+P2SDqu+lzgv92Mz5wKAAAAwKVqSV/z8fOXSqHWWpKMMWskDXHYtaQdH3OJtbbUGDNI0pvGmO3W2ndbewNJBQAAAHCGsNbOirfPGHPYGJNtrT1ojMmWdCTOGKUn/3vEGPOKpGmSWk0qmFMBAAAAdA+vSVp48vlCSSuaH2CMyTDGZDY8l3SVpK1tDUylAgAAAHDJqEtfQH9X0m+NMXdI2ifpS5JkjMmR9Atr7RxJgyW9YoyR6r/qC9ba/LYG7sLnBAAAAIBb1tpPJF3p8HqppDknn++WNLG9Y5NUAAAAAC4ZSal+B5GEmFMBAAAAwBOSCgAAAACe0P4EAAAAuNTFJ2onDJUKAAAAAJ6QaAEAAAAuMVHbGZUKAAAAAJ6QVAAAAADwhPYnAAAAwCUmajujUgEAAADAExItAAAAwCUmajujUgEAAADAE5IKAAAAAJ7Q/gQAAAC4xERtZ1QqAAAAAHhCogUAAAC4xERtZ1QqAAAAAHhCUgEAAADAE9qfAAAAAJeYqO2MSgUAAAAAT0i0AAAAAJeYqO2MSgUAAAAAT0gqAAAAAHhC+xMAAADgEu1PzqhUAAAAAPCEpAIAAACAJ7Q/AQAAAO3ABXRLVCoAAAAAeEKiBQAAALjERG1nVCoAAAAAeEJSAQAAAMATkgoASa13797avXu3475f/epXuvTSSzs5IgBAd2ZUP3/Ar0eyIqkAoBdeeEF5eXnq3bu3srOz9dnPflZ/+ctfTns8Y4w+/vjjJq9VVFTonnvu0fDhw5WRkaGzzz5b8+fP1/r161sdq7KyUiNHjjytOOrq6rR06VKNGjVKGRkZGj58uBYtWqTi4uLTGi9Rli5dqltvvdXvMBKquLhYxhhFIhG/QwEAJABJBdDN/fCHP9Tdd9+t+++/X4cPH9a+ffv0jW98QytWrGj3WPEuGGtra3XFFVfoww8/1MqVK1VeXq5t27ZpwYIFWrVqVbvGao/58+frtdde0wsvvKATJ05oy5YtmjJlit566y3PY6PjkXAA6AoaJmr79UhWJBVAN3bixAk99NBDeuaZZ3TdddcpIyNDqamp+sIXvqDvf//7kqT169drxowZ6tevn7Kzs3XXXXeprq6ucQxjjJ555hmNGjVKo0aN0mWXXSZJmjhxonr37q2XX35Zzz//vEpKSvTqq69q3LhxCgQCysjI0Pz587V06dK4YzW81lD1+OSTTzR37lz16dNH06ZN065du+J+tzVr1ujNN9/UihUrNHXqVAWDQfXt21d33nmn7rjjDklSaWmp5s6dqwEDBui8887Tz3/+88b3L126VF/60pd06623KjMzU+PHj9eOHTv05JNPatCgQRo2bJhWr17dePzMmTN13333adq0aerbt6+uvfZaffrpp5Kk//u//1Nubm6T+IYPH641a9YoPz9fTzzxhF5++WX17t1bEydObPx/c8cddyg7O1tDhw7VAw88oGg06vhda2pqtHDhQvXv319jxozRU0891eTzSktLdf3112vgwIEaMWKEfvKTnzTuq62t1d13362cnBzl5OTo7rvvVm1tbZO4n3rqKQ0aNEjZ2dl69dVXtWrVKp1//vkaMGCAnnjiicaxYrGYvvvd7+rcc8/VWWedpRtuuKHxHDT8XPTr10+9e/fW+++/r1/96le65JJL9K//+q8aMGCAHnzwQQ0YMEAffvhh45hHjhxRz549dfTo0bj/rwEA/iOpALqx999/X6FQSPPmzYt7TCAQ0I9+9CMdO3ZM77//vt566y399Kc/bXLMq6++qnXr1qmoqEjvvvuuJGnLli2qrKzUjTfeqDVr1ujqq69WRkZGmzGdOlZzd955p9LT03Xw4EE999xzeu655+KOs2bNGk2bNk3Dhg2Le8xNN92k3NxclZaW6ve//73uv//+JlWMP/zhD/ryl7+s48eP66KLLtLVV1+tWCymAwcO6KGHHtLXvva1JuP95je/0XPPPafS0lIFg0H9y7/8S5vf95prrtH999+vG2+8UZWVldqyZYskaeHChQoGg/r444+1adMmrV69Wr/4xS8cx3jkkUdUXFys3bt3680339Ty5csb98ViMX3hC1/QxIkTdeDAAb311lv68Y9/rD/+8Y+SpO985zsqKCjQ5s2btWXLFq1fv16PP/544/sPHTqkUCikAwcO6NFHH9VXvvIVLV++XB988IH+/Oc/69FHH22c8/KTn/xEr776qv70pz+ptLRU/fv315133ilJjT8XZWVlqqys1IwZMyRJ69at08iRI3XkyBE99NBDWrBgQZP4X3zxRc2aNUsDBw5s81wCAHxkrW3tAeAMtnz5cjt48OB2vedHP/qR/eIXv9i4Lcm+9dZbTY6RZHfu3Nm4feWVV9pvf/vbjdubNm2yffv2tZmZmfb88893NVYkErHBYNBu27atcd99991nL7nkEsc4Fy9ebG+88ca432Pfvn02JSXFlpeXN75277332oULF1prrX344YftrFmzGve99tprNiMjw0YiEWutteXl5VaSPX78uLXW2n/8x39s8h0/+ugjm5qaaiORiH3nnXfs0KFDm3z+OeecY998883Gz7rlllsa9x06dMimpaXZ6urqxtdeeOEFO3PmTMfvMmLECJufn9+4/fOf/7zx8woKCuywYcOaHP/EE0/Y22+/3Vpr7ciRI+3rr7/euC8/P9+ec8451lpr33nnHZuent7iOxcUFDQeP3nyZPvKK69Ya60dPXq0XbNmTeO+0tJSGwwGbTgctnv27LGSbDgcbtz/P//zPy1iKygosLm5uTYajVprrZ0yZYp9+eWXHb83gDNOW9elSfEYLdkCHx+SCv0+B06PZJ5EDiDBzjrrLB07dkyRSETBoPNfBzt27NA999yjwsJCVVdXKxKJaMqUKU2Oaa0a0PA5Bw8ebNyeNGmSysrKtGbNGi1evNjVWEePHlUkEmmy/5xzzmn1M3fs2BF3f2lpqQYMGKDMzMwm4xUW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Hz+u5ORkPfLII6qurlZiYqLy8/N18uRJpaWlqVmzZjp16pSCgoLUv3//ptal+Ph4LVy4UJI0d+5cvfTSS8rKytJnn32mnj17KjMzU7t27VJRUZEcDkfTHadqamoUFBSk119/XbGxsaqtrdWwYcO0YMEChreBXxBJBQAAsC0+Pl6HDx/W3//+d7311lvy9/fXmDFj9Mwzz+iVV17Rk08+qdLSUi1evFhDhw5VTEyMevbsqYEDB6qyslLNmzdXYmKi6uvrFRwcrHXr1unll1/WgAEDdNttt6mkpEQ+Pj764x//qN27d2vUqFEyxuj111/XoEGD1K5dO23dulWdOnVScHCw0tPTVVZWpoCAAAUFBenxxx9X//79deDAAeXm5mrjxo3evmTADYWiAgAA2NasWTMlJydryJAhmj59unr06KHq6mq1aNFC33//vZo1a6akpCQ1NDQoMjJS+/bt0wsvvKC0tDRNnDhRd9xxh5KTk3X48GFFRESourpakZGRGjt2rI4dO6bCwkI5HA69/PLLSktL08yZM+Xn56f33ntPy5cv16JFi3Tw4EEVFxcrJSVFiYmJioyM1MiRI7Vz506Fh4eroKBAq1at0oQJE7R+/XpvXzJcrxp31PbWzzWKogIAAPwihg0bpgMHDmj9+vUKDQ1VUVGR7rnnHt12223q3LmzysvLtX//fhljFBUVpcDAQBUVFSkiIkK1tbXatWuX2rZtq/3792vcuHFq2bKlTp8+ralTp2ry5MmSpD59+qigoEDSuVmJb775RpZlaerUqUpISJCPj49ee+01ORwO+fj4KDs7W/fdd59yc3M1YMAAZWZmat68efrggw8UFxenuLg4lZaWevOyATcEigoAAPCLaryFbElJiVwul1JTUzV8+HClpKRoxIgRysnJaWqFsixLP/zwg0JCQpSdnS2n06m2bdtqzJgx+vLLLy849o477tCTTz6phoYGzZs3TwkJCZo7d658fX3VqlUrjRo1SlOmTNE333yjDz74QGfPntW6dev02muvyd/fX/v27VNMTIwkqXfv3srOzmZ4Gz8fSYVbDGoDAIBfVGMr1FNPPaWysjLNmjVL1dXVsixLZ86cUfPmzZWUlKT09HRlZGRo3759Wrdund577z01b95c8+bN05/+9CeVlZU17cYdEhKi0aNH65///Kckad26ddq7d6/i4+MV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\n",
      "text/plain": [
       "<Figure size 1080x864 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pp.plot_grid(g, cell_value=p, figsize=(15, 12))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also retrieve the flux for each face. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1MAAAKaCAYAAADbKANUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XmYHXWBN/pvpztrJ4FAWLJBCEtYAyYBDC6DCOqgMoOi4IDACzjjyL2Dj++ojCIqOjL6jgtexBm3GZUXGcc7LgOSQZarQgghkISBRAhLIAuEhC3pTnqv+0dDvwTpBIp0Fznn83mePKdPV3Wd76lUnz7f+lXVaSiKIgAAALwyQ6oOAAAAsCNSpgAAAEpQpgAAAEpQpgAAAEpQpgAAAEpo2sZ0l/oDAADqWUN/E4xMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAQAAlKBMAdSR0aNH56GHHnrJaf/6r/+aN77xjYOcCAB2XMoUwHZ21VVXZfbs2Rk9enQmTJiQP/3TP80tt9xSenkNDQ154IEHtvjexo0b87GPfSxTp05Nc3Nz9tprr5xyyilZsGDBVpfV0tKSadOmlcrR0dGRz33uc9l///3T3NycqVOn5pxzzsmKFStKLW+gfO5zn8sZZ5xRdYwBtWLFijQ0NKSrq6vqKAB1TZkC2I6+9rWv5aMf/Wg+9alPZe3atXn00UfzkY98JL/85S9f8bL6e6Pc3t6e4447Lv/93/+da665Jhs2bMiyZcty2mmn5de//vUrWtYrccopp+RXv/pVrrrqqjz77LNZsmRJZs2alRtvvPFVL5vtT9ECGARFUWztHwAv0zPPPFM0NzcXP/3pT/ud5/bbby9e//rXFzvttFOx5557Fueff37R3t7eNz1Jcfnllxf77bdfMXXq1OJNb3pTkaQYNWpU0dzcXFx99dXFd7/73WLPPfcsWlpatprnxct6/nvLly8viqIo1q9fX7z73e8uxowZUxx55JHFRRddVLzhDW94yWX95je/KUaMGFE8+uij/T7e6tWri3e/+93FuHHjin333bf4zne+0zfts5/9bHHKKacUp59+ejF69Oji0EMPLe67777iS1/6UrHbbrsVkydPLv7rv/6rb/4/+ZM/KS688MLiyCOPLMaOHVucdNJJxZNPPlkURVHcfPPNxaRJk7Z47L333rv4zW9+U1x33XXF0KFDi6ampqK5ubmYMWNGURS9/zfnnHNOseeeexYTJ04sPv3pTxddXV0v+Tw2bdpUnHnmmcXOO+9cHHjggcWXv/zlLR5v9erVxXve855i/PjxxdSpU4vLLrusb1pbW1txwQUXFBMmTCgmTJhQXHDBBUVbW9sWub/85S8Xu+22W7HnnnsWP//5z4trr7222H///Ytx48YVf//3f9+3rO7u7uLSSy8tpk2bVuyyyy7F+973vr51MGXKlCJJ0dzcXDQ3Nxfz5s0r/uVf/qU45phjio9+9KPFuHHjigsvvLAYN25ccffdd/ctc+3atcWIESOKJ554ot//RwD+SL99ycgUwHZy2223pa2tLSeffHK/8zQ2NubrX/961q9fn9tuuy033nhjrrjiii3m+cUvfpHbb789S5cuze9+97skyZIlS9LS0pJTTz01N9xwQ97+9renubl5m5leuKwXO//88zNixIg89thj+cEPfpAf/OAH/S7nhhtuyFFHHZUpU6b0O88HPvCBTJ48OWvWrMnPfvazfOpTn9pi1Oo///M/88EPfjBPP/10Xve61+Xtb397enp6snr16lx88cX5q7/6qy2W96Mf/Sg/+MEPsmbNmjQ1NeVv/uZvtvl83/GOd+RTn/pUTj311LS0tGTJkiVJkrPOOitNTU154IEHsmjRolx//fX53ve+95LL+PznP58VK1bkoYceym9+85tceeWVfdN6enry7ne/O4cffnhWr16dG2+8Md/4xjfyX//1X0mSv//7v8/8+fOzePHiLFmyJAsWLMgXv/jFvp9//PHH09bWltWrV+eSSy7Jhz70oVx55ZW588478/vf/z6XXHJJ3zlt3/zmN/OLX/wiv/3tb7NmzZqMGzcu559/fpL0bRfPPPNMWlpaMmfOnCTJ7bffnmnTpuWJJ57IxRdfnNNOO22L/D/5yU9y/PHHZ7fddtvmugTgZdha06qk9wHsoK688spijz32eEU/8/Wvf7348z//8777SYobb7xxi3nygtGkoiiKt771rcUnP/nJvvuLFi0qdtppp2LMmDHFAQcc8LKW1dXVVTQ1NRXLli3rm/Z3f/d3/Y5MnXfeecWpp57a7/N49NFHiyFDhhQbNmzo+96FF15YnHXWWUVR9I5MHX/88X3TfvWrXxXNzc19o0MbNmwokhRPP/10URS9I1MvfI733ntvMXTo0KKrq2urI1PPP9bpp5/eN+3xxx8vhg0bVmzatKnve1dddVVx7LHHvuRz2WeffYq5c+f23f/ud7/b93jz588vpkyZssX8X/rSl4qzzz67KIqimDZtWnHttdf2TZs7d26x9957F0XROzI1YsSIP3rO8+fP75t/5syZxc9//vOiKIriwAMPLG644Ya+aWvWrCmampqKzs7O4uGHHy6SFJ2dnX3T/+Vf/uWPss2fP7+YPHly0d3dXRRFUcyaNav4t3/7t5d83gD0q9++1FRhjwOoKbvuumvWr1+frq6uNDW99Mvr/fffn4997GNZuHBhNm3alK6ursyaNWuLebY2+vP84zz22GN994844og888wzueGGG3Leeee9rGWtW7cuXV1dW0zfe++9t/qY999/f7/T16xZk1122SVjxozZYnkLFy7su7/HHnv0fT1y5MiMHz8+jY2NffeT3gtk7Lzzzn+Ufe+9905nZ2fWr1/fb4b+PPLII+ns7MyECRP6vtfT09PvulmzZs0W01749SOPPJI1a9b0ZUyS7u7uvOlNb+r72Reux7333jtr1qzpu7/rrrv+0XN+8XppaWnpe6yTTz45Q4b8n4NIGhsbs3bt2n6f64uf09FHH53m5ub89re/zYQJE/LAAw/kpJNO6vfnAXhlHOYHsJ3MmTMnI0aMyC9+8Yt+5/nrv/7rHHjggVm+fHk2bNiQL33pSymKYot5Ghoatvo4b33rW3P99dentbV1m5n6W9Zuu+2WpqamrFy5su97jz76aL/LOf7447NgwYKsWrXqJadPnDgxTz31VDZu3LjF8iZNmrTNjP15cbahQ4dm/PjxaW5uzqZNm/qmdXd3Z926dX33X/ycp0yZkuHDh2f9+vV55pln8swzz2TDhg259957X/JxJ0yYsMXzfGGOKVOmZJ999ulbzjPPPJONGzf2Xfhj4sSJeeSRR7bIPXHixFLPf8qUKbnuuuu2eKy2trZMmjSp3//Xl/r+WWedlSuvvDI//vGPc8opp2TEiBGl8gDwx5QpgO1kp512yiWXXJLzzz8/v/jFL7Jp06Z0dnbmuuuuyyc+8YkkvZc0Hzt2bEaPHp0//OEP+fa3v73N5e6xxx5bfDbUmWeemQkTJuTkk0/OPffck+7u7rS1tW0xCrQtjY2Nec973pPPfe5z2bRpU5YuXZof/vCH/c5//PHH54QTTsjJJ5+cO++8M11dXdm4cWP+6Z/+KT/4wQ8yZcqUHHPMMfm7v/u7tLW15e677873v//9nH766S8704tdeeWVWbp0aTZt2pSLL744p5xyShobG3PAAQekra0t1157bTo7O/PFL34x7e3tfT+3xx57ZMWKFenp6UnSW47e9ra35X/+z/+ZDRs2pKenJw8++GB++9vfvuTjvv/978+ll16ap59+OqtXr87ll1/eN+2oo47K2LFj8+UvfzmbN29Od3d37rnnntxxxx1Jes8b++IXv5h169Zl/fr1ueSSS0pfpv3DH/5wPv3pT/eVs3Xr1vVdFXK33XbLkCFD+v3MsBf64Ac/mJ///Oe58sorc+aZZ5bKAsBLU6YAtqOPfexj+drXvpYvfvGL2W233TJlypRcfvnl+fM///MkyT/+4z/mqquuypgxY/KhD30op5566jaX+bnPfS5nnXVWdt555/z0pz/NiBEjcvPNN+fggw/OO9/5zowdOzbTp0/PHXfckZ/+9KcvO+vll1+elpaW7Lnnnjn77LPzP/7H/9jq/D/72c9y4okn5tRTT81OO+2UQw89NAsXLszxxx+fpPfiBitWrMjEiRNz8skn5/Of/3xOOOGEl53nxT74wQ/m7LPPzp577pm2trZ885vfTNJbWq+44oqcd955mTRpUpqbmzN58uS+n3vf+96XpPeQupkzZybpvZhFR0dHDj744IwbNy6nnHLKFodKvtDFF1+cyZMnZ5999snxxx+fU045JcOHD0/SW0L/8z//M4sXL84+++yT8ePH57zzzsuzzz6bJLnooosye/bszJgxI4cddlhmzpyZiy66qNTzv+CCC3LSSSflbW97W8aMGZPXv/71uf3225Mko0aNyqc//em84Q1vyM4775z58+f3u5zJkydn5syZaWho6DscEYDt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1+a8886rOgpQR5Qp6t6YMWNy1FFHpaurK//93//9kudIba/Lp69evTpTpkzpuz958mRvTtkhrFixIosWLcrRRx9ddZQdXnd3d4444ojsvvvuOeGEE6zT7eSjH/1ovvKVr2TIEG9ttqeGhoa87W1vy6xZs/Kd73yn6jjwmuMVB9J7ONPIkSMzbty4LFiwYKujT6/m8unPz/+Od7xji+WxfTzyyCNVR6hJxx9/fN773vfmG9/4RsaOHVt1nB1eY2NjFi9enKOPPjoLFizIPffcU3WkHd4111yT3XffPbNmzconPvGJquPUlFtvvTV33XVXxo4dm29961v53e9+V3UkeE1RpuAFJk+enMMOOyybNm3KqlWrXnKeV3P59MmTJ2flypVZv359kt7DUiZOnLhdsr9Su+66a8aPH1/JYw+U1+qVF/fff/8ddm95Z2dn7rjjjpx++ul5z3veU3WcrdrRtulnn302xx577A55vt/06dOrjrCFW2+9Nb/61a8yderULFq0KDfddFPOOOOMqmO9auPHj8+uu+5aaYbn/0Zt3LgxJ598chYsWFBpHnitaao6ALzWjBkzJs3NzXnqqafy1FNPveTo0/MXppg8eXLa29szdOjQNDVt+9fpyCOPzPLly9Pc3JyOjo5cffXVueqqqwbiaWzTueeeW8nj1qN777236gilFEWRc889NyNGjMjHPvaxquNs00c+8pGqI2zTunXrMnTo0Oy8887p6enJDTfckE9+8pNVx3pFGhoa8oc//KHqGFu49NJLc+mllybpLXr7779/rrzyyopTvXof/ehHK3381tbW9PT0ZMyYMenu7s7111+fiy++uNJM8FqzY+4qhQHW0NCQGTNmZJdddklra2s2btz4kvO90sunNzU15fLLL8/y5ctz0EEH5f3vf38OOeSQgXgKdeUDH/hA5syZk7a2tkyePDnf//73q45UE2699db8+Mc/zsaNG3PEEUfkiCOOyK9//euqY+3QHnvssbzlLW/JjBkzsmzZspxwwgku481r1tq1a/PGN74xhx9+eP7whz/kne985xaHqQNJwzbe/G2fD9aB14CiKNLW1pb58+fnmGOOSZLMmzdvm1///ve/T2NjY/baa688+uij/c7/3pNOytP9XGKd7Wdokv6vu8j2ZF0PDut58FjXg2PcmDF5asOGqmPA9tTvCe4O84Nt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O+2UpqamjBw5cqujTPXgHUmOqzpEHVic5IQk/1/FOerB25K8teoQdeD29G7Td1QdpA68Nb3bda1qaWnJe9/73nzjG9/I2LFjq44DpShTUIf+O8l9SdYm+V3FWWrdJ567vbDSFLXvziQPJ1mVZH7FWWrdx190y8CYl2R1ekemFlWcZSB0dnbmve99b04//fS85z3vqToOlOacKahDG5Lsnd7zvFoqzlLrJjx3O7nSFLVvY5IpSXqe+5qBM+lFtwyMlvSu4yHpfc2uJUVR5Nxzz81BBx2Uj33sY1XHgVfFyBTUoTek99LGf5Hez+Zh4PwwvVe2uqrqIDXu2CTnJTk7vYegMXCe35b/d6Upat/bkpyV5ENJ/qTiLNvbrbfemh//+Me56aabcsQRR+SII47Ir3/966pjQSlGpgAAGDRvfOMbUxSuq0htMDIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQgjIFAABQQlPVAQAAqC2zZ8/e4v748eMzd+7citLAwFGm4FXo6OjIo48+mpaWlqqjAMBrxsKFC7c6/Zxzzsk111yT3XffPffcc88gpYLtz2F+UEJra2s2b96chQsXZvjw4Wlubq46EgDsMM4++2wjVdQEI1PwMhVFka6urtx1113p7u7O0KFDM2fOnDQ0NGTlypVVx3vFmpNsrjpEnRgfe64GQ3OSoVWHqBO7Vx2gTjQnGVF1iAHy5je/OStWrKg6BrxqyhS8DI899lgeeeSRdHZ2Zt99981OO+2UefPmpaGhoepopX246gB1ZEW8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enry/e9/P//2b/+Wq666Kvvuu29VcWFAKVPwnKIocuedd2bs2LFpbm7OiBEj+p2vp6cnDQ0NueOOO15ynp6enr69zm1tbVm4cOFARq9LXV1d6ejoyKhRo7J27dqq49Sk50f91qxZU3WUmtTT05P29nbb7wDavHlznnzyyb43+2xfnZ2dueWWWzJy5MgtRp+eH6FKerfzo48+OuPGjctOO+30R8swSsWOzqsLJHnyySfT2tqaAw44ILvttlvWr1/f77zd3d3p6enJrFmzXnL6U089lQceeCAzZ87M2LFjBypyXWtvb8+SJUsyZ86cDBs2rOo4NakoiixYsCBHHXWUUdUB8vw6nj17tnU8QDo7O7No0aIcdthh/e4g49XZuHFjli1blmnTpmXXXXdNsuUIVZKsW7cu5557bt70pjfls5/9rENbqSnKFHXvgQceyFNPPZVRo0Zlt91263e+np6eDBkyJLfffnu/83R0dKSrqysjRozIfffdNxBxSbJp06YMGzYsS5YsqTpKzXp+1MSo6sBqb2/P7bff7s3lAOrp6cntt9/uvNUBds8996SpqemPdnC9cJTqyiuvzD//8z9nwoQJLzlaaJSKHZEyRd1qb29Pa2triqLI7NmzM3/+/H7n7enpSVdX10ueG/X89OfL0/Tp032g7wB66KGHMn78+Oyzzz5VR6lpq1atStL74ZoMnNWrV6enpydTpkypOkpNW7FiRbq7u523M4B6enqyfPnydHd3Z/r06X07CF44SlUURa655pr8wz/8Q6644oocddRRVcWF7UaZoi49+eST+cMf/pDhw4dn//3373e+oigyZMiQ3Hbbbf3O09PTk7a2tr49cnfeeedARCZbnie1tUMxefWeP+fvscceqzpKTXt+BPDxxx+vOkrN27RpU5544gnnTw2wjo6O3HLLLRkxYsQf7Vh8fpSqp6cn73vf+zJkyJC+QwNfzCgVOwqvKNSV5z+E96GHHsqsWbNy1113bXXerY1GJcmzzz6b++67LzNmzMi4ceMGIjLP6ejoyOLFi/P617/+jy7Hy/blfKnB47ypwfP8uZaHH364cy0H2DPPPJP7778/BxxwwBYXnXjhKFVLS0v+5m/+JmPHjs23vvUt57Sxw3IsEnXl/vvvT9L7yezbeuHu7OxMURT9Tn/ssceyfPnyHHbYYYrUACuKIsuWLcu+++6rSA2CzZs3+3yeQdLQ0JDm5uZs2rSp6ig1b/jw4dlvv/2ydOnSrb628+rtvPPOmTFjRpYvX97v1UBHjx6d733ve5k+fXre8pa35OGHHx7klLB9NGzjBcWrDTWjKIps2rQpCxYsyDHHHJMkmTdv3hZfz5kzJz09PVmwYEF6enr6XU57e3uKosiIESO84RwEHR0dKYpCkRokHR0dSWLv/SCxvgdXe3t7kng92U42bNiQL3zhC1m7dm322GOPXHzxxRkzZkyS3r+XbW1taWhoyJIlS3LFFVekp6cnJ554YpYsWZJnn3023d3dWbNmTdrb2zN8+PC+8626urry4IMPZtOmTZk8eXIeeeSRvse88847c/bZZ2fz5s058cQTc9ll/3979x4cZXXwcfy3m809IYFIEBIhpJFLAjQwhJsIAcRcLFFaS7EdqXKzUEStrXgZoK2MeEWxMEIsAqJEZRCMXCIDFnBgMMAEWxILm5DQkHBJIISwSZbNk33/YLIjbVHf05JU8/38l+w+kzPPTHb2O+c85yyVzWaT2+3WlClTdPjwYUVFRen9999XXFxcG90ZfM9c98sey/zQrnzTxhDftO25x+NRYWGhoqOj1aNHD0KqFdTW1qq4uFgDBw5kY49WUlhYqO7du/u+EOHGunz5ssrKytSvX7+2Hkq70NzcrCNHjig+Pl6RkZFtPZzvvPnz5ysrK0u/+c1vtGTJEu3evVt//OMffa97vV6VlpZqxowZys3NVVxcnFJTU/XWW2+pT58+mj9/vjp27Khf/OIXuvPOOxUaGqo9e/aosbFRBQUFOnr0qI4ePXrN35w1a5ays7M1bNgwZWZmKi8vTxkZGVq1apU6duyo4uJivffee5o3b57ef//91r4laGeIKUDfbttzy7LU2NiowMBAeTweVVVVteII26eW2cTg4GA29mhFLpeLZWetzOVyXfcQcPz3tQQVy1n/cxs3btSSJUt08OBBde/eXYsXL9aGDRuumaUqLCxU165dVVlZqQsXLigmJkbjx49XaGioLl++rJ49e2r9+vVqbm7W/v37FRgYqODgYCUkJOjixYtyuVzavHmzqqurfZtWDB8+3HfG1f3336/Y2FgVFRVp4sSJkq7+T23YsMG30+6cOXM0ffr0trxV+J4iptDufdO259LVAwfLysqUkpKi0NDQVhxd++X1enX06FHF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\n",
      "text/plain": [
       "<Figure size 1080x864 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "F = flux * p + bound_flux * p_b\n",
    "\n",
    "neumann_faces = np.argwhere(bound.is_neu)\n",
    "\n",
    "assert np.allclose(np.abs(p_b[neumann_faces]), np.abs(F[neumann_faces]))\n",
    "\n",
    "F_n = F * g.face_normals\n",
    "pp.plot_grid(g, vector_value=F_n, figsize=(15, 12))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
